home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-05-23 | 17.7 KB | 1,117 lines |
-
- Include "equ.h"
- Include "impequ.h"
-
- SECTION metafile,CODE,PUBLIC
- *******************************************
- *** object format ***
- *******************************************
- dumbentry:
- clr.l d0
- rts
-
- dc.l "IMPO"
- dc.w 201
- dc.l 0
-
- table: dc.l 0
- dc.l name,special,check,metafile
-
- *
- * GEM Metafile
- *
- check: move.l table,a0
- move.l buff1(a0),a1
- move.l (a1),a1
- cmp.w #$ffff,(a1)+
- bne never
- cmp.w #$0e00,(a1)
- beq v101
- cmp.w #$1800,(a1) ;major version number
- bne never
- v101: moveq #2,d0
- rts
- *
- *
- *
- metafile:
- move.l #1200,xpoint
- move.l #1200,ypoint
- move.w #0,angle
-
- clr.b object+ob_Flag
- clr.w object+ob_Slant
- clr.w object+ob_Twist
- move.w #50,object+ob_LWidth ;1 point line
- move.b #1,object+ob_LType ;solid line
- move.b #1,object+ob_LColor ;black line
- move.b #0,object+ob_FType ;no fill
- move.b #1,object+ob_FColor ;black fill
- clr.b object+ob_LBegin
- clr.b object+ob_LEnd
- move.w #900,object+ob_HStandOff ;1/8 inch
- move.w #900,object+ob_VStandOff ;1/8 inch
-
- move.l table,a0
- move.l f_openr(a0),a0
- jsr (a0)
-
- move.l table,a0
- move.l o_open(a0),a0
- jsr (a0)
-
- move.l table,a0
- move.l o_begingroup(a0),a0
- jsr (a0)
- beq meta10
-
- bsr objgeti
- bsr objgeti
- move.w d0,length
-
- moveq #4,d0
- bsr objskip
-
- bsr objgetie
- move.l d0,objdx
- bsr objgetie
- move.l d0,objdy
-
- bsr objgetie
- move.l d0,-(sp)
- bsr objgetie
- move.l (sp)+,d1
- sub.l objdx,d1
- sub.l objdy,d0
- cmp.l d1,d0
- bcs meta0
- move.l d0,d1
- meta0: move.w #1600,xyscale
- meta1: cmp.l #24000,d1
- bcs meta2
- lsr.l #1,d1
- lsl.w xyscale
- bra meta1
-
- meta2: moveq #0,d0
- move.w length,d0
- lsl.w #1,d0
- sub.w #16,d0
- bsr objskip
-
- meta5: bsr objgeti
- beq meta10
-
- cmp.w #$ffff,d0
- beq meta9
- move.w d0,opcode
- bsr objgeti
- beq meta10
- move.w d0,vertex
- bsr objgeti
- beq meta10
- move.w d0,integer
- bsr objgeti
- beq meta10
- move.w d0,subopcode
-
- lea gemlist,a0
- meta6: move.w (a0)+,d0
- beq meta8 ;just skip it
- cmp.w opcode,d0
- beq meta7 ;execute routine
- addq.l #4,a0
- bra meta6
- *
- meta7: move.l (a0),a0
- jsr (a0) ;go do the meta command
- bra meta5
- *
- *
- meta8: bsr opskip
- beq meta10
- bra meta5
-
- opskip: moveq #0,d0
- move.w vertex,d0
- lsl.w #1,d0
- add.w integer,d0
- lsl.w #1,d0
- bra objskip
-
- *
- * end of input file. close and flush buffer
- *
- meta9: move.l table,a0
- move.l o_endgroup(a0),a0
- jsr (a0)
- beq meta10
-
- move.l table,a0
- move.l o_close(a0),a0
- jsr (a0)
-
- move.l table,a0
- move.l f_closer(a0),a0
- jmp (a0)
- *
- *
- *
- opf0: addq.l #4,sp
- opfail: addq.l #4,sp
- meta10: move.l table,a0
- move.l o_abort(a0),a0
- jsr (a0)
-
- move.l table,a0
- move.l f_closer(a0),a0
- jmp (a0)
-
-
- ***********************************
- ***********************************
- * vsl_type
- *
- op15: bsr objgeti
- move.b d0,vsltype
- rts
- *
- * vsl_width
- op16: bsr objgeti
- mulu #4,d0
- move.w d0,vslwidth
- bra objgeti
- *
- * vsl_color
- op17: bsr objgeti
- move.b d0,vslcolor
- rts
- *
- * vsl_ends
- op108: bsr objgeti
- move.b d0,vslbgn
- bsr objgeti
- move.b d0,vslend
- rts
- *
- * vsf_interior
- op23: bsr objgeti
- move.b d0,vsfinterior
- rts
- *
- * vsf_style
- op24: bsr objgeti
- move.b d0,vsfstyle
- rts
- *
- * vsf_color
- op25: bsr objgeti
- move.b d0,vsfcolor
- rts
- *
- * vsf_perimeter
- op104: bsr objgeti
- move.b d0,vsfperimeter
- rts
-
- *
- * v_pline
- op6: move.w vertex,d0
- cmp.w #2,d0
- bne op6a
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
- move.b #tdln,object+ob_Type
- bsr putlstyle
- bra putobj
- *
- op6a: move.l #$7fffffff,object+ob_Left
- move.l #$7fffffff,object+ob_Top
- move.l #$80000000,object+ob_Right
- move.l #$80000000,object+ob_Bottom
-
- move.w vertex,d0
- mulu #10,d0 ;* bytes per line
- add.l #22,d0 ;length,width,height,xscl,yscl,cnt
- * ;newpath,strokepath
- clr.w d1
- clr.w d2
- move.l table,a0
- move.l m_alloc(a0),a0
- jsr (a0)
- beq opfail
-
- move.l a0,mptr
- move.l (a0),a4
- lea 20(a4),a4
- move.l a4,pptr
-
- move.w vertex,subopcode
- bra vpln5
- vpln1: bsr objgetxy
- move.l pptr,a0
- move.w #LINETO,(a0)+ ;the first one will be changed
- move.l d0,(a0)+ ;to a MOVETO
- move.l d1,(a0)+
- move.l a0,pptr
-
- cmp.l object+ob_Left,d0
- bge vpln2
- move.l d0,object+ob_Left
- vpln2: cmp.l object+ob_Top,d1
- bge vpln3
- move.l d1,object+ob_Top
- vpln3: cmp.l object+ob_Right,d0
- ble vpln4
- move.l d0,object+ob_Right
- vpln4: cmp.l object+ob_Bottom,d1
- ble vpln5
- move.l d1,object+ob_Bottom
- vpln5: subq.w #1,subopcode
- bcc vpln1
-
-
- move.l mptr,a0
- move.l (a0),a0
- move.w vertex,d0
- mulu #10,d0 ;* bytes per line
- add.l #22,d0 ;length,width,height,xscl,yscl,cnt
- * ;newpath,strokepath
- move.l d0,(a0)+
- move.l object+ob_Right,d0
- sub.l object+ob_Left,d0
- move.l d0,(a0)+
- move.l object+ob_Bottom,d0
- sub.l object+ob_Top,d0
- move.l d0,(a0)+
- move.w #100,(a0)+
- move.w #100,(a0)+
- move.w vertex,d0
- addq.w #2,d0 ;newpath,strokepath
- move.w d0,(a0)+
- move.w #NEWPATH,(a0)+
- move.w #MOVETO,(a0)
-
- move.l object+ob_Left,d0
- move.l object+ob_Top,d1
- move.w vertex,d7
- bra vpln8
- vpln7: addq.l #2,a0
- sub.l d0,(a0)+
- sub.l d1,(a0)+
- vpln8: dbf d7,vpln7
- *
- move.w #STROKEPATH,(a0)
- *
- move.b #tpoly,object+ob_Type
- bsr putlstyle
- bsr putobj
-
- move.l mptr,a0
- move.l (a0),a0
- move.l (a0),d0
- move.l table,a0
- move.l o_malloc(a0),a0
- jsr (a0)
- beq opfail
-
- move.l mptr,a1
- move.l (a1),a1
- move.l (a1),d0
- lsr.w #1,d0
- bra vpln11
- vpln10: move.w (a1)+,(a0)+
- vpln11: dbf d0,vpln10
-
- move.l mptr,a0
- move.l table,a1
- move.l m_delete(a1),a1
- jsr (a1)
- rts
-
- *
- * v_gtext
- *
- op8: bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Bottom
- move.l xpoint,d2
- mulu integer,d2
- add.l d2,d0
- sub.l ypoint,d1
- move.l d0,object+ob_Right
- move.l d1,object+ob_Top
-
- move.w angle,object+ob_Slant
- move.w angle,object+ob_Twist
- clr.b object+ob_LType
- move.w #25,object+ob_LWidth
- clr.b object+ob_FType
- move.b #ttxt,object+ob_Type
- bsr putobj
- clr.w object+ob_Slant
- clr.w object+ob_Twist
-
- lea column,a0
- move.b #1,cm_LCalc(a0)
- move.b #1,cm_QCalc(a0)
- move.l object+ob_Left,cm_Left(a0)
- move.l object+ob_Top,cm_Top(a0)
- move.l #$7fffff,cm_Right(a0)
- move.l #$7fffff,cm_Bottom(a0)
- clr.w cm_Flag(a0)
-
- move.l #1000,cm_Font(a0)
- clr.l cm_Attrb(a0)
- move.l xpoint,cm_XPoint(a0)
- move.l ypoint,cm_YPoint(a0)
- clr.w cm_Spacing(a0)
- move.w #$8000,cm_Lead(a0)
- clr.w cm_BMod(a0)
- clr.w cm_PIndent(a0)
- clr.w cm_LIndent(a0)
- clr.w cm_RIndent(a0)
- clr.b cm_Tag(a0)
- clr.b cm_Justify(a0) ;block left
- move.b #9,cm_CFStyle(a0)
- move.b #1,cm_CFColor(a0)
- move.b #0,cm_CLStyle(a0)
- move.b #1,cm_CLColor(a0)
- move.w #100,cm_CLWidth(a0)
- clr.l cm_Tabs(a0)
-
- move.l #cm_Sizeof+4,d0
- add.w integer,d0
- addq.l #1,d0
- bclr #0,d0 ;round up
-
- move.l table,a0
- move.l o_malloc(a0),a0
- jsr (a0)
- beq opfail
-
- lea column,a1
- move.w #cm_Sizeof,d0
- bra txt2
- txt1: move.b (a1)+,(a0)+
- txt2: dbf d0,txt1
-
- clr.w (a0)+
- move.w integer,(a0)+
-
- bra txt4
- txt3: move.l a0,-(sp)
- bsr objgeti
- move.l (sp)+,a0
- beq opfail
- move.b d0,(a0)+
- txt4: subq.w #1,integer
- bcc txt3
-
- rts
-
- *
- *
- * v_fillarea
- *
- op9: move.l #$7fffffff,object+ob_Left
- move.l #$7fffffff,object+ob_Top
- move.l #$80000000,object+ob_Right
- move.l #$80000000,object+ob_Bottom
-
- move.w vertex,d0
- mulu #10,d0 ;* bytes per line
- add.l #24,d0 ;length,width,height,xscl,yscl,cnt
- * ;newpath,closepath,fillpath
- clr.w d1
- clr.w d2
- move.l table,a0
- move.l m_alloc(a0),a0
- jsr (a0)
- beq opfail
-
- move.l a0,mptr
- move.l (a0),a4
- lea 20(a4),a4
- move.l a4,pptr
-
- move.w vertex,subopcode
- bra vfil5
- vfil1: bsr objgetxy
- move.l pptr,a0
- move.w #LINETO,(a0)+ ;the first one will be changed
- move.l d0,(a0)+ ;to a MOVETO
- move.l d1,(a0)+
- move.l a0,pptr
-
- cmp.l object+ob_Left,d0
- bge vfil2
- move.l d0,object+ob_Left
- vfil2: cmp.l object+ob_Top,d1
- bge vfil3
- move.l d1,object+ob_Top
- vfil3: cmp.l object+ob_Right,d0
- ble vfil4
- move.l d0,object+ob_Right
- vfil4: cmp.l object+ob_Bottom,d1
- ble vfil5
- move.l d1,object+ob_Bottom
- vfil5: subq.w #1,subopcode
- bcc vfil1
-
-
- move.l mptr,a0
- move.l (a0),a0
- move.w vertex,d0
- mulu #10,d0 ;* bytes per line
- add.l #24,d0 ;length,width,height,xscl,yscl,cnt
- * ;newpath,closepath,fillpath
- move.l d0,(a0)+
- move.l object+ob_Right,d0
- sub.l object+ob_Left,d0
- move.l d0,(a0)+
- move.l object+ob_Bottom,d0
- sub.l object+ob_Top,d0
- move.l d0,(a0)+
- move.w #100,(a0)+
- move.w #100,(a0)+
- move.w vertex,d0
- addq.w #3,d0 ;newpath,closepath,fillpath
- move.w d0,(a0)+
- move.w #NEWPATH,(a0)+
- move.w #MOVETO,(a0)
-
- move.l object+ob_Left,d0
- move.l object+ob_Top,d1
- move.w vertex,d7
- bra vfil8
- vfil7: addq.l #2,a0
- sub.l d0,(a0)+
- sub.l d1,(a0)+
- vfil8: dbf d7,vfil7
- *
- move.w #CLOSEPATH,(a0)+
- move.w #FILLPATH,(a0)
- *
- move.b #tpoly,object+ob_Type
- bsr putfstyle
- bsr putobj
-
- move.l mptr,a0
- move.l (a0),a0
- move.l (a0),d0
- move.l table,a0
- move.l o_malloc(a0),a0
- jsr (a0)
- beq opfail
-
- move.l mptr,a1
- move.l (a1),a1
- move.l (a1),d0
- lsr.w #1,d0
- bra vfil11
- vfil10: move.w (a1)+,(a0)+
- vfil11: dbf d0,vfil10
-
- move.l mptr,a0
- move.l table,a1
- move.l m_delete(a1),a1
- jsr (a1)
- rts
-
- *
- * output primitives
- op11: move.w subopcode,d0
- cmp.w #1,d0
- beq vbar
- cmp.w #2,d0
- beq arc
- cmp.w #3,d0
- beq pie
- cmp.w #4,d0
- beq circle
- cmp.w #5,d0
- beq ellipse
- cmp.w #6,d0
- beq elparc
- cmp.w #7,d0
- beq elppie
- cmp.w #8,d0
- beq rndrect
- cmp.w #9,d0
- beq frndrect
- cmp.w #10,d0
- beq jgtext
- *
- * unknown sub-opcode, skip it
- *
- moveq #0,d0
- move.w vertex,d0
- lsl.w #1,d0
- add.w integer,d0
- lsl.w #1,d0
- bra objskip
- *
- * v_bar
- *
- vbar: bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
-
- move.b #tbox,object+ob_Type
- bsr putfstyle
- bsr putobj
- moveq #0,d0
- bsr objputw
- moveq #0,d0
- bra objputw
- *
- * arc drawing primitive
- *
- arc: bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- moveq #8,d0
- bsr objskip
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d0,object+ob_Bottom
- bsr objgeti
- move.w d0,object+ob_BAngle
- bsr objgeti
- move.w d0,object+ob_EAngle
-
- move.b #tcir,object+ob_Type
- bsr putlstyle
- bra putcir
- *
- * pie drawing primitive
- *
- pie: bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- moveq #8,d0
- bsr objskip
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d0,object+ob_Bottom
- bsr objgeti
- move.w d0,object+ob_BAngle
- bsr objgeti
- move.w d0,object+ob_EAngle
- move.b #tcir,object+ob_Type
- bsr putfstyle
- bra putcir
-
- *
- * circle drawing primitive
- *
- circle:
- move.w #0,object+ob_BAngle
- move.w #3600,object+ob_EAngle
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- moveq #4,d0
- bsr objskip
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d0,object+ob_Bottom
- move.b #tcir,object+ob_Type
- bsr putfstyle
- bra putcir
- *
- * ellipse drawing primitive
- *
- ellipse:
- move.w #0,object+ob_BAngle
- move.w #3600,object+ob_EAngle
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
- move.b #telp,object+ob_Type
- bsr putfstyle
- bra putcir
- *
- * elliptical arc drawing primitive
- *
- elparc:
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
- bsr objgeti
- move.w d0,object+ob_BAngle
- bsr objgeti
- move.w d0,object+ob_EAngle
- move.b #telp,object+ob_Type
- bsr putlstyle
- bra putcir
-
- *
- * elliptical pie drawing primitive
- *
- elppie:
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetdxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
- bsr objgeti
- move.w d0,object+ob_BAngle
- bsr objgeti
- move.w d0,object+ob_EAngle
- move.b #telp,object+ob_Type
- bsr putfstyle
- bra putcir
-
- *
- putcir: move.l object+ob_Left,d0
- move.l object+ob_Top,d1
- move.l object+ob_Right,d2
- move.l object+ob_Bottom,d3
- sub.l d2,object+ob_Left
- sub.l d3,object+ob_Top
- add.l d2,d0
- add.l d3,d1
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
-
- bsr putobj
- move.w object+ob_BAngle,d0
- mulu #10,d0
- bsr objputw
- move.w object+ob_EAngle,d0
- mulu #10,d0
- bra objputw
-
- *
- * rounded rectangle drawing primitive
- *
- rndrect:
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
-
- move.b #tbox,object+ob_Type
- bsr putlstyle
- bsr putobj
- move.w #900,d0
- bsr objputw
- move.w #900,d0
- bra objputw
-
- *
- * filled rounded rectangle drawing primitive
- *
- frndrect:
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
-
- move.b #tbox,object+ob_Type
- bsr putfstyle
- move.w vslwidth,object+ob_LWidth
- move.b vslcolor,object+ob_LColor
- bsr putobj
- move.w #900,d0
- bsr objputw
- move.w #900,d0
- bra objputw
-
-
- *
- * justified graphics text
- *
- jgtext: subq.w #2,integer ;null terminated& justify mode
-
- bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Bottom
- sub.l ypoint,d1
- move.l d0,object+ob_Right
- move.l d1,object+ob_Top
- bsr objgetdxy
- add.l d0,object+ob_Right
-
- bsr objgeti
- beq opfail
- bsr objgeti
- beq opfail
-
- move.w angle,object+ob_Slant
- move.w angle,object+ob_Twist
-
- clr.b object+ob_LType
- move.w #25,object+ob_LWidth
- clr.b object+ob_FType
- move.b #ttxt,object+ob_Type
- bsr putobj
-
- clr.w object+ob_Slant
- clr.w object+ob_Twist
-
- lea column,a0
- move.b #1,cm_LCalc(a0)
- move.b #1,cm_QCalc(a0)
- move.l object+ob_Left,cm_Left(a0)
- move.l object+ob_Top,cm_Top(a0)
- move.l #$7fffff,cm_Right(a0)
- move.l #$7fffff,cm_Bottom(a0)
- clr.w cm_Flag(a0)
-
- move.l #1000,cm_Font(a0)
- clr.l cm_Attrb(a0)
- move.l xpoint,cm_XPoint(a0)
- move.l ypoint,cm_YPoint(a0)
- clr.w cm_Spacing(a0)
- move.w #$8000,cm_Lead(a0)
- clr.w cm_BMod(a0)
- clr.w cm_PIndent(a0)
- clr.w cm_LIndent(a0)
- clr.w cm_RIndent(a0)
- clr.b cm_Tag(a0)
- clr.b cm_Justify(a0) ;block left
- move.b #9,cm_CFStyle(a0)
- move.b #1,cm_CFColor(a0)
- move.b #0,cm_CLStyle(a0)
- move.b #1,cm_CLColor(a0)
- move.w #100,cm_CLWidth(a0)
- clr.l cm_Tabs(a0)
-
- move.l #cm_Sizeof+4,d0
- add.w integer,d0
- addq.l #1,d0
- bclr #0,d0 ;round up
-
- move.l table,a0
- move.l o_malloc(a0),a0
- jsr (a0)
- beq opfail
-
- lea column,a1
- move.w #cm_Sizeof,d0
- bra jtxt2
- jtxt1: move.b (a1)+,(a0)+
- jtxt2: dbf d0,jtxt1
-
- clr.w (a0)+
- move.w integer,(a0)+
-
- bra jtxt4
- jtxt3: move.l a0,-(sp)
- bsr objgeti
- move.l (sp)+,a0
- beq opfail
- move.b d0,(a0)+
- jtxt4: subq.w #1,integer
- bcc jtxt3
-
- rts
-
- *
- * vst_height
- *
- op12: bsr objgetdxy
- move.l d1,xpoint
- move.l d1,ypoint
- rts
-
- *
- * vst_rotation
- *
- op13: bsr objgeti
- mulu #10,d0
- move.w d0,angle
- rts
-
- *
- * vst_point
- *
- op107: bsr objgeti
- mulu #100,d0
- move.l d0,xpoint
- move.l d0,ypoint
- rts
-
- *
- * vr_recfl
- op114: bsr objgetxy
- move.l d0,object+ob_Left
- move.l d1,object+ob_Top
- bsr objgetxy
- move.l d0,object+ob_Right
- move.l d1,object+ob_Bottom
-
- move.b #tbox,object+ob_Type
- bsr putfstyle
- bsr nolstyle
- bsr putobj
- moveq #0,d0
- bsr objputw
- moveq #0,d0
- bra objputw
-
- *******************************************
- *** ***
- *******************************************
- putlstyle:
- move.b vsltype,object+ob_LType
- move.w vslwidth,object+ob_LWidth
- move.b vslbgn,object+ob_LBegin
- move.b vslend,object+ob_LEnd
- move.b vslcolor,object+ob_LColor
- bra nofstyle
-
- nolstyle:
- clr.b object+ob_LType
- clr.w object+ob_LWidth
- clr.b object+ob_LBegin
- clr.b object+ob_LEnd
- clr.b object+ob_LColor
- rts
-
- putfstyle:
- moveq #0,d0 ;finterior=0 or > 3 is hollow
- cmp.b #1,vsfinterior
- bne putfs1
- moveq #9,d0
- putfs1: cmp.b #2,vsfinterior
- bne putfs2
- move.b vsfstyle,d0
- addq.b #1,d0
- putfs2: cmp.b #3,vsfinterior
- bne putfs3
- move.b vsfstyle,d0
- add.b #25,d0
- putfs3: move.b d0,object+ob_FType ;fill type
- move.b vsfcolor,object+ob_FColor
- bsr nolstyle
- tst.b vsfperimeter
- beq rrts
- move.b #1,object+ob_LType
- move.w #25,object+ob_LWidth
- move.b vsfcolor,object+ob_LColor
- rrts: rts
-
- nofstyle:
- clr.b object+ob_FType
- clr.b object+ob_FColor
- rts
-
-
- putobj: move.l table,a1
- move.l o_obj(a1),a1
- lea object,a0
- jsr (a1)
- beq opf0
- rts
-
- ***
- ***
- ***
- objgetdxy:
- bsr objgetie
- move.l d0,temp
- bsr objgetie
- move.l d0,d1
- move.l temp,d0
- bra objd1
- *
- objgetxy:
- bsr objgetie
- move.l d0,temp
- bsr objgetie
- move.l d0,d1
- move.l temp,d0
- sub.l objdx,d0
- sub.l objdy,d1
- objd1: move.l d1,-(sp)
-
- move.w #7200,d1
- move.l table,a0
- move.l muls1632(a0),a0
- jsr (a0)
- move.w xyscale,d2
- move.l table,a0
- move.l divs1648(a0),a0
- jsr (a0)
-
- move.l d0,d1
- move.l (sp)+,d0
- move.l d1,-(sp)
-
- move.w #7200,d1
- move.l table,a0
- move.l muls1632(a0),a0
- jsr (a0)
- move.w xyscale,d2
- move.l table,a0
- move.l divs1648(a0),a0
- jsr (a0)
- move.l d0,d1
- move.l (sp)+,d0
- rts
- *
- objgetie:
- move.l table,a0
- move.l f_geti(a0),a0
- jsr (a0)
- beq rrts
- ext.l d0
- moveq #1,d1
- rts
-
- objgeti:
- move.l table,a0
- move.l f_geti(a0),a0
- jmp (a0)
- *
- objskip:
- move.l table,a0
- move.l f_skip(a0),a0
- jmp (a0)
- *
- objputw:
- move.l table,a0
- move.l o_putw(a0),a0
- jsr (a0)
- beq opf0
- rts
-
- *******************************************************************
- *** called when the import routine choosen finds something ***
- *** wrong with the file loaded. ***
- *******************************************************************
- notright:
- rts
-
- never: moveq #0,d0
- rts
-
- maybe: moveq #1,d0
- rts
-
- right: moveq #2,d0
- rts
-
- *************************************************************
- *************************************************************
- SECTION metafile,DATA,PUBLIC
-
- gemlist:
- dc.w 6
- dc.l op6
- dc.w 8
- dc.l op8
- dc.w 9
- dc.l op9
- dc.w 11
- dc.l op11
- dc.w 12
- dc.l op12
- dc.w 13
- dc.l op13
- dc.w 15
- dc.l op15
- dc.w 16
- dc.l op16
- dc.w 17
- dc.l op17
- dc.w 23
- dc.l op23
- dc.w 24
- dc.l op24
- dc.w 25
- dc.l op25
-
- dc.w 107
- dc.l op107
- dc.w 108
- dc.l op108
- dc.w 104
- dc.l op104
- dc.w 114
- dc.l op114
-
- dc.w 1
- dc.l opskip
- dc.w 5
- dc.l opskip
- dc.w 22
- dc.l opskip
- dc.w 32
- dc.l opskip
- dc.w 39
- dc.l opskip
- dc.w 106
- dc.l opskip
- dc.w 107
- dc.l opskip
-
- dc.w 0 ;end of list
-
- *
- special:
- dc.w 1
- dc.l spcl1
-
- name: dc.b "GEM Metafile v2.1.2",0
- spcl1: dc.b "Object",0
-
-
- SECTION metafile,BSS,PUBLIC
- xyscale: ds.w 1
-
- opcode: ds.w 1
- vertex: ds.w 1
- integer: ds.w 1
- subopcode: ds.w 1
-
- vsltype: ds.b 1
- vslcolor: ds.b 1
- vslend: ds.b 1
- vslbgn: ds.b 1
- vslwidth: ds.w 1
-
- vsfinterior: ds.b 1
- vsfstyle: ds.b 1
- vsfcolor: ds.b 1
- vsfperimeter: ds.b 1
-
- object: ds.w ob_SizeOf/2
- column: ds.w cm_Sizeof/2
- xpoint: ds.l 1
- ypoint: ds.l 1
- angle: ds.w 1
-
- objdx: ds.l 1
- objdy: ds.l 1
- objxs: ds.l 1
- objys: ds.l 1
-
- temp: ds.l 1
-
- mptr: ds.l 1
- pptr: ds.l 1
- length: ds.w 1
-